package com.r2coding.music.api;

import com.github.pagehelper.PageInfo;
import com.r2coding.common.util.Result;
import com.r2coding.music.entity.SongListCategoryEntity;
import com.r2coding.music.service.SongListService;
import com.r2coding.music.vo.req.QuerySongListReqVo;
import com.r2coding.music.vo.resp.SongListRespVo;
import com.r2coding.music.vo.resp.SongRespVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 歌单控制器
 *
 * @author:98k灬
 * @since:2022/05/15 11:48
 **/
@RestController
@RequestMapping("/api/songList")
public class ApiSongListController {
    @Autowired
    SongListService songListService;

    /**
     * 条件分页查询歌单信息列表
     *
     * @param reqVo 查询条件
     * @return 统一响应体
     */
    @PostMapping("/list")
    public Result list(@RequestBody QuerySongListReqVo reqVo) {
        PageInfo<SongListRespVo> info = songListService.getList(reqVo);
        return Result.ok(info);
    }

    /**
     * 根据歌单id查询歌单详情
     *
     * @param id 歌单id
     * @return 统一响应体
     */
    @GetMapping("/getById/{id}")
    public Result getById(@PathVariable("id") Integer id) {
        SongListRespVo vo = songListService.getSongListById(id);
        return Result.ok(vo);
    }

    /**
     * 根据歌单id查询歌单分类信息
     *
     * @param id 歌单id
     * @return 统一响应体
     */
    @GetMapping("/getSongListCategoryById/{id}")
    public Result getSongListCategoryById(@PathVariable("id") Integer id) {
        SongListCategoryEntity entity = songListService.getSongListCategoryById(id);
        return Result.ok(entity);
    }

    /**
     * 根据歌单id查询歌曲信息
     *
     * @param id 歌单id
     * @return 统一响应体
     */
    @GetMapping("/getSongsById/{id}")
    public Result getSongsById(@PathVariable("id") Integer id) {
        List<SongRespVo> list = songListService.getSongsById(id);
        return Result.ok(list);
    }
}
